CC  = c++
CXX = c++

# Partie commentée : choisissez les options que vous voulez avoir
# CXXFLAGS  = -ansi -pedantic -Wall   # pour les purs et durs
# CXXFLAGS += -g                      # pour debugger
# CXXFLAGS += -pg                     # pour profiler
CXXFLAGS += -O2                     # pour optimiser la vitesse


all : Prgm tests

clean:
	rm -f *.o

wipe : 
	rm -f *.o *.exe

# Les éxécutables:

Prgm : NouveauJoueur.exe EcrireJoueur.exe EvolutionJoueur.exe AjouterSorts.exe ApercuJoueur.exe

NouveauJoueur.exe : Race.o Humain.o Nain.o Elfe.o Gnome.o Hobbit.o DemiElfe.o DemiOrque.o DemiOgre.o Classe.o Guerrier.o Paladin.o Rodeur.o Voleur.o Barde.o Clerc.o Druide.o Mage.o Spec.o Joueur.o NouveauJoueur.o lib.o CColor.o ADD.h debugstreams.o
	c++ $^ -o $@

EcrireJoueur.exe : Race.o Humain.o Nain.o Elfe.o Gnome.o Hobbit.o DemiElfe.o DemiOrque.o DemiOgre.o Classe.o Guerrier.o  Paladin.o Rodeur.o Voleur.o Barde.o Clerc.o Druide.o Mage.o Spec.o Joueur.o EcrireJoueur.o lib.o CColor.o ADD.h debugstreams.o
	c++ $^ -o $@

EvolutionJoueur.exe : Race.o Humain.o Nain.o Elfe.o Gnome.o Hobbit.o DemiElfe.o DemiOrque.o DemiOgre.o Classe.o Guerrier.o  Paladin.o Rodeur.o Voleur.o Barde.o Clerc.o Druide.o Mage.o Spec.o Joueur.o EvolutionJoueur.o lib.o CColor.o ADD.h debugstreams.o
	c++ $^ -o $@

AjouterSorts.exe : Race.o Humain.o Nain.o Elfe.o Gnome.o Hobbit.o DemiElfe.o DemiOrque.o DemiOgre.o Classe.o Guerrier.o  Paladin.o Rodeur.o Voleur.o Barde.o Clerc.o Druide.o Mage.o Spec.o Joueur.o AjouterSorts.o lib.o CColor.o ADD.h debugstreams.o
	c++ $^ -o $@

ApercuJoueur.exe : Race.o Humain.o Nain.o Elfe.o Gnome.o Hobbit.o DemiElfe.o DemiOrque.o DemiOgre.o Classe.o Guerrier.o  Paladin.o Rodeur.o Voleur.o Barde.o Clerc.o Druide.o Mage.o Spec.o Joueur.o ApercuJoueur.o lib.o CColor.o ADD.h debugstreams.o
	c++ $^ -o $@

# Tous les tests:

tests : test_guerrier.exe test_paladin.exe test_rodeur.exe test_voleur.exe test_barde.exe test_clerc.exe test_druide.exe test_mage.exe test_spec.exe test_race.exe test_joueur.exe test_nain.exe test_gnome.exe test_xml.exe test_tex.exe test_xp.exe test_arguments.exe test_sort.exe

# Les .o par catégories

Classes : Classe.o Barde.o Clerc.o Druide.o Guerrier.o Mage.o Paladin.o Rodeur.o Spec.o Voleur.o

Races : Race.o DemiElfe.o DemiOgre.o DemiOrque.o Elfe.o Gnome.o Hobbit.o Humain.o Nain.o

# Les tests

test_guerrier.exe : Classe.o Guerrier.o test_guerrier.o lib.o debugstreams.o test_guerrier.o lib.o CColor.o
	c++ $^ -o $@

test_paladin.exe : Classe.o Paladin.o test_paladin.o lib.o debugstreams.o CColor.o
	c++ $^ -o $@

test_rodeur.exe : Classe.o Rodeur.o test_rodeur.o lib.o debugstreams.o CColor.o
	c++ $^ -o $@

test_voleur.exe : Classe.o Voleur.o test_voleur.o lib.o debugstreams.o CColor.o
	c++ $^ -o $@

test_barde.exe : Classe.o Barde.o test_barde.o lib.o debugstreams.o CColor.o
	c++ $^ -o $@

test_clerc.exe : Classe.o Clerc.o test_clerc.o lib.o debugstreams.o CColor.o
	c++ $^ -o $@

test_druide.exe : Classe.o Druide.o test_druide.o lib.o debugstreams.o CColor.o
	c++ $^ -o $@

test_mage.exe : Classe.o Mage.o test_mage.o lib.o debugstreams.o CColor.o
	c++ $^ -o $@

test_spec.exe : Classe.o Spec.o test_spec.o lib.o debugstreams.o CColor.o
	c++ $^ -o $@

test_race.exe : Race.o Humain.o test_race.o debugstreams.o lib.o CColor.o
	c++ $^ -o $@

test_nain.exe : Race.o Nain.o test_nain.o debugstreams.o lib.o CColor.o
	c++ $^ -o $@

test_gnome.exe : Race.o Gnome.o test_gnome.o debugstreams.o lib.o CColor.o
	c++ $^ -o $@

test_joueur.exe : Race.o Humain.o Nain.o Elfe.o Gnome.o Hobbit.o DemiElfe.o DemiOrque.o DemiOgre.o Classe.o Guerrier.o  Paladin.o Rodeur.o Voleur.o Barde.o Clerc.o Druide.o Mage.o Spec.o Joueur.o test_joueur.o lib.o CColor.o ADD.h debugstreams.o
	c++ $^ -o $@

test_xml.exe : Race.o Humain.o Nain.o Elfe.o Gnome.o Hobbit.o DemiElfe.o DemiOrque.o DemiOgre.o Classe.o Guerrier.o  Paladin.o Rodeur.o Voleur.o Barde.o Clerc.o Druide.o Mage.o Spec.o Joueur.o test_xml.o lib.o CColor.o ADD.h debugstreams.o
	c++ $^ -o $@

test_tex.exe : Race.o Humain.o Nain.o Elfe.o Gnome.o Hobbit.o DemiElfe.o DemiOrque.o DemiOgre.o Classe.o Guerrier.o  Paladin.o Rodeur.o Voleur.o Barde.o Clerc.o Druide.o Mage.o Spec.o Joueur.o test_tex.o lib.o CColor.o ADD.h debugstreams.o
	c++ $^ -o $@

test_xp.exe : Race.o Humain.o Nain.o Elfe.o Gnome.o Hobbit.o DemiElfe.o DemiOrque.o DemiOgre.o Classe.o Guerrier.o  Paladin.o Rodeur.o Voleur.o Barde.o Clerc.o Druide.o Mage.o Spec.o Joueur.o test_xp.o lib.o CColor.o ADD.h debugstreams.o
	c++ $^ -o $@

test_arguments.exe : lib.o test_arguments.o debugstreams.o CColor.o
	c++ $^ -o $@

test_sort.exe : lib.o test_sort.o debugstreams.o CColor.o
	c++ $^ -o $@


# Les fichiers objets

%.o : src/%.cc src/%.h
	c++ $(CXXFLAGS) -c $^ -o $@

%.o : src/%.cc
	c++ $(CXXFLAGS) -c $^ -o $@
